Digital video technology has advanced to provide high quality digital video playback on a computer. In a common configuration, digital video samples are received from a signal source (e.g., a hard disk or a video camera). A decoder module decodes incoming video samples and then loads each decoded sample into an available frame buffer of a video adapter at an input frame rate. The video adapter reads the video data from a populated frame buffer and sends the video data to a display (e.g., a computer monitor) on a frame-by-frame basis, in accordance with a display refresh rate.
The refresh rate specifies the number of frames displayed per unit time (e.g., frames per second). The period between the displays (or “refreshes”) of temporally adjacent frames is termed the “vertical blanking interval”, during which no video frame data is transmitted to the display. In many configurations, the input sample rate may be different from the refresh rate, and therefore, the incoming samples are likely to be out-of-sync with the frame refreshes.
As such, to accommodate the different rates, the availability of a new sample for display, which is dependent on the input sample rate, is synchronized with the refresh rate to achieve a smooth video display. For example, existing digital video systems synchronize sequential frame buffer reads with the refresh rate using timed software calls, which are dependent on system clocks and the system processor (e.g., the CPU). However, because timed software calls are so sensitive to CPU usage, spikes in CPU utilization can perturb this synchronization and negatively impact the video playback quality by introducing irregular playback and mis-alignment with associated audio playback.